package com.wrl.mmall.util;

import java.math.BigDecimal;

/**
 * 统一防止精度丢失的方法
 */
public class BigDecimalUtil {

    private BigDecimalUtil(){

    }

    //加法
    public static BigDecimal add(double d1, double d2){
        BigDecimal b1 = new BigDecimal(Double.toString(d1));
        BigDecimal b2 = new BigDecimal(Double.toString(d2));
        return b1.add(b2);
    }

    //减法
    public static BigDecimal sub(double d1, double d2){
        BigDecimal b1 = new BigDecimal(Double.toString(d1));
        BigDecimal b2 = new BigDecimal(Double.toString(d2));
        return b1.subtract(b2);
    }

    //乘法
    public static BigDecimal mul(double d1, double d2){
        BigDecimal b1 = new BigDecimal(Double.toString(d1));
        BigDecimal b2 = new BigDecimal(Double.toString(d2));
        return b1.multiply(b2);
    }

    //除法
    public static BigDecimal div(double d1, double d2){
        BigDecimal b1 = new BigDecimal(Double.toString(d1));
        BigDecimal b2 = new BigDecimal(Double.toString(d2));

        //除法，除不尽的情况。默认保留2位小数
        return b1.divide(b2, 2, BigDecimal.ROUND_HALF_UP);
    }

    //除法，保留n位小数
    public static BigDecimal div(double d1, double d2, int n){
        BigDecimal b1 = new BigDecimal(Double.toString(d1));
        BigDecimal b2 = new BigDecimal(Double.toString(d2));
        return b1.divide(b2, n, BigDecimal.ROUND_HALF_UP);
    }






}
